runtime vs compile time polymorphism c